package com.example.parameter;

/**
 * 目标：完成打印int类型的数组内容
 */
public class MethodTest3 {
    public static void main(String[] args) {
        // 需求：输出一个int类型的数组内容,要求输出格式为：[11, 22, 33, 44, 55]
        int[] arr = {10, 30, 50, 70};
        printArray(arr);

        // 如果数组的值是null,如果不处理是会有空指针异常的
        int[] arr2 = null;
        printArray(arr2);

        // 这样是不会报错的,但是输出结果是[] 因为数组的长度是0因此循环不会指向就打印了[]
        int[] arr3 = {};
        printArray(arr3);
    }

    /**
     * 打印数组元素
     *
     * @param arr 数组
     */
    public static void printArray(int[] arr) {
        // 因为数组可能为null,所以需要判断一下,如果为null,直接打印null,如果不加判断可能会有空指针异常
        if (arr == null) {
            System.out.println(arr); // null
            return; // 跳出当前方法
        }

        System.out.print("[");
        // 直接遍历接到的数组元素
        for (int i = 0; i < arr.length; i++) {
            // 因为需要打印的格式是[11, 22, 33, 44, 55],所以最后一个元素不需要打印","
            // 因此判断如果是数组的最后一个元素,那么就直接输出值就可以了,就不用在后面再打印","
            // 反之正常输出即可
            // if (i == arr.length - 1) {
            //    System.out.print(arr[i]);
            // } else {
            //    System.out.print(arr[i] + ", ");
            // }
            // 使用三元运算符优化
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }
}
